package com.tedu.api.thread;

import org.junit.Test;

import javax.imageio.stream.ImageInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.BiConsumer;
import java.util.function.Consumer;

/**
 * Lambda表达式：支持接口、抽象类【匿名内部类】创建
 *              支持集合遍历
 */
public class LambdaAPI {
    // Lambda表达式：支持集合遍历 List、set存值方式一致
    @Test
    public void testList(){
        //List集合：重复并且有序---存数据【账号信息，IP地址】
        List<String> list=new ArrayList<>();
        list.add("lanyj");
        list.add("666666");
        list.add("123456789");
        //查看集合信息---遍历三种：普通for、增强for、forEach方法
        for(String name:list){
            System.out.println("增强for集合中元素："+name);
        }
        //Lambda表达式支持集合--forEach(Lambda表达式)
          list.forEach(names-> System.out.println(names));
     /*   list.forEach(new Consumer<String>() {
            public void accept(String names) {
                System.out.println(names);
            }
        });*/
    }
    //Lambda表达式：支持集合遍历Map 键值对存值
    @Test
    public void testMap(){
        Map<Integer,String> map=new HashMap<>();
        map.put(1,"账号");
        map.put(2,"密码");
        map.put(3,"手机号码");
        map.forEach(new BiConsumer<Integer, String>() {
            public void accept(Integer integer, String s) {
                System.out.println("键："+integer+"\n"+"值："+s);
            }
        });
        //map保存"Entry：键值对"forEach()转成Lambda
        map.forEach((integer, s) -> System.out.println("键："+integer+"\n"+"值："+s));
    }
    /**作业
     * 单元测试：testLambdaHomeWork1---周二12点前
     * 1.线程两种创建方式：使用Lambda表达式完成，参考"TR"
     * 2.找集合中：ListAPI：单元测试名：testSort：使用Lambda表达式完成
     * 3.找IO流--File类--FilterAPI：转换成匿名内部类转成Lambda
     *   使用Lambda表达式完成【五行代码搞定】
     * 4.找IO流--File类---FilterAPI：转换成匿名内部类转成Lambda
     *   使用Lambda表达式完成【两行代码搞定】
     */
    @Test
    public void testLambdaHomeWork1(){
     // 1.线程两种创建方式：使用Lambda表达式完成，参考"TR"


    }
}
